﻿using System.Collections.Generic;
using System.Threading.Tasks;
using SDCloudSolution.SDCloud.Entities;
using SDCloudSolution.SDCloud.Entities.Models;

namespace SDCloudSolution.SDCloud.BusinessLayer.Model.Interfaces
{
    public interface IModelComponent
    {
        Task<ModelEntity> GetModelByIdAsync(int modelId);

        Task<int> GetCountOfModelCopiesForUser(int originalModelId, int userId);

        Task<int> GetCountOfModelCopies(int originalModelId);

        Task<IEnumerable<ModelEntity>> FindAllModelsRelatedToPublicModel(int publicModelId);

        Task<EntityCollection<ModelEntity>> FindModelsForUser(int userId, Paging paging);

        Task<IEnumerable<ModelEntity>> FindAllModelsForUser(int userId);

        Task<EntityCollection<ModelEntity>> FindPublicModelsAsync(Paging paging);

        Task SaveModelAsync(ModelEntity entity);

        Task DeleteAsync(ModelEntity entity);
    }
}
